package com.wk.net.heartbeat;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 抽象策略：传输心跳包<br>
 * 1.发送：把心跳包对象的属性填入心跳消息<br>
 * 2.接收：读取心跳消息中的数据，重建心跳包对象<br>
 * 接收时采用“工厂方法”设计模式来创建心跳包对象：HeartbeatType的构造方法随子类而异，无法统一调用，故必须对其创建过程做出抽象
 * 
 * @author Bai Yu
 *
 * @param <HeartbeatType>
 *            心跳包类型
 */
public interface HeartbeatTransferer<HeartbeatType> {
	void send(HeartbeatType heartbeat, OutputStream output) throws IOException;

	HeartbeatType receive(InputStream input) throws IOException;
}
